The present application relates generally to an improved data processing apparatus and method and more specifically to an apparatus and method for fine grained cache allocation in a shared cache.
A cache is used to speed up data transfer and may be either temporary or permanent. Memory caches are in every computer to speed up instruction execution and data retrieval and updating. These temporary caches serve as staging areas, and their contents are constantly changing. A memory cache, or “CPU cache,” is a memory bank that bridges main memory and the central processing unit (CPU). A memory cache is faster than main memory and allows instructions to be executed and data to be read and written at higher speed. Instructions and data are transferred from main memory to the cache in fixed blocks, known as cache “lines.”
A virtual machine is an instance of an operating system along with one or more applications running in an isolated partition within a computer system. A virtual machine monitor enables different operating systems to run in the same computer at the same time and prevents applications from interfering with each other. This differs from a dual-boot or multi-boot environment, in which the user has to choose only one operating system at startup.
Each virtual machine is like a machine within the machine and functions as if it owns the entire computer. The operating systems in each virtual machine partition may be referred to as “guest operating systems,” and they communicate with the hardware via the virtual machine monitor (VMM). The VMM “virtualizes” the hardware, such as processors, memory, input/output (I/O) adapters, and other resources, for each virtual machine.
Using virtualization, multiple operating systems can run in the same server, eliminating the need to dedicate a single machine to one application. Old and new applications can run simultaneously with their respective operating systems in multiple core servers with many threads of execution, saving space and power consumption. New versions of an operating system and new applications can be deployed without purchasing new hardware.